package com.qjdchina.sku.biz;

import java.util.List;

import com.qjdchina.commons.result.Result;
import com.qjdchina.sku.model.Category;
import com.qjdchina.sku.model.CategoryBrand;
import com.qjdchina.sku.model.query.CategoryQueryVO;
import com.qjdchina.sku.model.vo.CategoryStatisticsVO;

/**
 * Created by fankiwu on 2016/11/22.
 */
public interface CategoryManager {

    /**
     * 获取所有的一级品类
     * @return
     */
    public Result<List<Category>> getAllRootCategoryByCompany(Integer skuCompanyId);

	/**
	 * 根据父类ID获取子类 shenpingfeng 2017年2月16日 
	 * @param parentId
	 * @param skuCompanyId
	 * @return
	 */
    public Result<List<Category>> getChildCategorysByCompany(Integer parentId,Integer skuCompanyId);

    /**
     * 根据parentId查询 
     * shenpingfeng
     * 2016年12月9日
     * @param parentId
     * @return
     */
	public Result<List<Category>> getCagegorysByParentId(Integer parentId);
	/**
	 * 根据Id查询
	 * shenpingfeng
	 * 2016年12月9日
	 * @param id
	 * @return
	 */
	public Result<Category> getCagegorysById(Integer id);
	/**
	 * 创建品类信息 
	 * shenpingfeng
	 * 2016年12月29日
	 * @param category
	 * @return
	 */
	public Result<String> createCategory(Category category);
	/**
	 * 创建品类品牌关联
	 * shenpingfeng
	 * 2017年1月11日
	 * @param categoryBrand
	 * @return
	 */
	public Result<String> createCategoryBrand(CategoryBrand categoryBrand);
	/**
	 * 更新
	 * shenpingfeng
	 * 2017年1月12日
	 * @param category
	 * @return
	 */
	public Result<String> update(Category category);
	/**
	 * 根据skuBrandId查询
	 * shenpingfeng
	 * 2017年1月13日
	 * @param skuBrandId
	 * @return
	 */
	public Result<List<Category>> getCategoryBySkuBrandId(Integer skuBrandId);
	/**
	 * 获取所有根品类
	 * shenpingfeng
	 * 2017年2月16日
	 * @return
	 */
	public Result<List<Category>> getAllRootCategory();
	/**
	 * 根据父类ID获取子类
	 * shenpingfeng
	 * 2017年2月16日
	 * @param id
	 * @return
	 */
	public Result<List<Category>> getChildCategorys(Integer id);
	/**
	 * 根据条件查询category
	 * shenpingfeng
	 * 2017年4月12日
	 * @param categoryQueryVO
	 * @return
	 */
	public Result<Category> getCategoryWhereStatement(CategoryQueryVO categoryQueryVO);

	/**
	 * 统计品类下部品数量
	 *
	 * @param parentIds
	 * @return
	 */
	Result<List<CategoryStatisticsVO>> categoryProductStatistical(List<Integer> parentIds);
}
